<?php namespace web\home\controller;


class Shoplist extends Conf_common{
	
//		列表首页
		public function index(){
//			获取顶级分类
			$cateData=Db::table('category')->where('pid',0)->get();
			View::with('cateData',$cateData);
//			获取cid
			$cid=Q('get.cid',0,'intval');
//			获取所有分类的cid
			$cateDatas=Db::table('category')->get();
//			获取所有get参数cid的所有自己的cid
			$cates=$this->getSon($cateDatas,$cid);
//			p($cates);die;			
//			将自己压入进去
			$cates[]=$cid;
//			获取所有分类下得商品ID
			$GidData=Db::table('goods')->where("cid in(".implode(',',$cates).")")->lists('gid');
//			p($GidData);die;
//			获取商品的属性规格
			$attrData=Db::table('goods_attr')->where("gid in(".implode(',',$GidData).")")->groupBy('gtvalue')->get();
//			p($attrData);die;
			$Attrs=array();
			foreach($attrData as $k=>$v){
				$Attrs[$v['taid']][]=$v;
			}
//			p($AttrData);die;
			foreach($Attrs as $k=>$v){
				$AttrData[]=array(
					'taname'=>Db::table('type_attr')->where('taid',$k)->pluck('taname'),
					'tavalue'=>$v
				);
			}
//			p($AttrData);die;
//			分配数据到页面
			View::with('AttrData',$AttrData);
//			配置get参数			
			$num=count($AttrData);
			$param=isset($_GET['param'])?explode('_',$_GET['param']):array_fill(0,$num,0);
//			p($param);die;
//			分配到页面
			View::with('param',$param);
//			根据商品属性获商品数据
			$GoodsData=array();
			foreach($param as $k=>$v){
//				获取商品属性
				if($v){
//					根据商品属性ID获取商品属性名
					$gtvalue=Db::table('goods_attr')->where('gtid',$v)->pluck('gtvalue');
//					根据商品属性名获取商品ID
					$GoodsData[]=Db::table('goods_attr')->where('gtvalue',$gtvalue)->lists('gid');
				}
				
			}
//			p($GoodsData);			
//			获取交积
			if($GoodsData){
//				获取第一个单元数据
				$tempData=$GoodsData[0];
				foreach($GoodsData as $k=>$v){
					$tempData=array_intersect($tempData,$v);
				}
//				获取分类商品ID和属性商品ID的交积
				$tempData=array_intersect($tempData,$GidData);
//				p($tempData);
//				获取商品
				if($tempData){
					$goods=Db::table('goods')->where("gid in(".implode(',',$tempData).")")->get();
				}else{
					$goods=0;
				}
			}else{
//				如果没有get参数就获取所有分类下的数据
				$tempData=$GidData;
//				p($tempData);
//				获取商品
				$goods=Db::table('goods')->where("gid in(".implode(',',$tempData).")")->get();
			}
//				p($goods);die;
			
				View::with('goods',$goods);
				$yixuan=Q('get.param','');
				if($yixuan){
					$yixuan=explode('_',$yixuan);
	//				重组数组
					foreach($yixuan as $k=>$v){
						$yixuan[$k]=Db::table('goods_attr')->where('gtid',$v)->pluck('gtvalue');
					}
//					p($yixuan);
					View::with('yixuan',$yixuan);	
				}			
//				p($yixuan);
				
			View::make();
		}
		
		public function getSon($data,$cid){
			$temp=array();
			foreach ($data as $k => $v) {
//				p($v['cid']);
				if($v['pid']==$cid){
					$temp[]=$v['cid'];
					$temp=array_merge($temp,$this->getSon($data,$v['cid']));
				}
				
			}
			return $temp;
			
		}
	
	
}

?>